package br.padroes.strategy;

public class Livro {
	
	//Calcular descontos sob o preço de um livro de acordo com o gênero
	//
	
	public static final int ROMANCE = 1;
	public static final int FICCAO_CIENTIFICA = 2;
	public static final int LIVRO_TECNICO = 3;
	protected double preco;
	protected int genero;
	protected CalculaDesconto estrategiaDeCalculo;

	public Livro(int genero, double preco) {
		this.preco = preco;
		switch (genero) {
		case ROMANCE:
			estrategiaDeCalculo = new CalculoDescontoQuinzeOuDez();
			genero = ROMANCE;
			break;
		case FICCAO_CIENTIFICA:
			estrategiaDeCalculo = new CalculoDescontoQuinzeOuDez();
			genero = FICCAO_CIENTIFICA;
			break;
		case LIVRO_TECNICO:
			estrategiaDeCalculo = new CalculoDescontoVinteOuQuinze();
			genero = LIVRO_TECNICO;
			break;
		default:
			throw new RuntimeException("Genero nao encontrado!");
		}
	}

	public double calcularSalarioComImposto() {
		return estrategiaDeCalculo.calculaPrecoComDesconto(this);
	}

	public double getPreco() {
		return preco;
	}
}